#ifndef _INTEGRATOR_GAUSS_KRONORD_H_
#define _INTEGRATOR_GAUSS_KRONORD_H_


/* Copyright (c) 2015, Bernard Gingold. License: MIT License (http://www.opensource.org/licenses/mit-license.php)
C++ wrapper class for QUADPACK QAG Integrators -  declaration.

@file IntegratorGaussKronord.h
@author: Bernard Gingold
@version:  1.0  25/12/2015
@description: QUADRATURE_F77_DECLARATIONS.h
*/

#include "MathLibDefinitions.h"
#include "QUADRATURE_F77_DECLARATIONS.h"


namespace   mathlib
{

	class IntegratorQAG
	{


	public:

		/*
		@brief C++ wrapper for QAG Subroutine, float version.
		*/
		static  void     x_qag(float(*)(float *), float, float, float, float,
			int, float, float, int, int, int, int, int, std::vector<int> &, std::vector<float> &);

		/*
		@brief  C++ wrapper for DQAG Subroutine, double version.
		*/
		static  void     x_qag(double(*)(double *), double, double, double, double,
			int, double, double, int, int, int, int, int, std::vector<int> &, std::vector<double> &);

		/*
		@brief  C++  wrapper for QAGE Subroutine, float version.
		*/
		static  void     x_qage(float(*)(float *), float, float, float, float, int,
			int, float, float, int, int, std::vector<float> &, std::vector<float> &,
			std::vector<float> &, std::vector<float> &, int, int);

		/*
		@brief   C++  wrapper for DQAGE Subroutine, double version.
		*/
		static  void     x_qage(double(*)(double *), double, double, double, double, int,
			int, double, double, int, int, std::vector<double> &, std::vector<double> &,
			std::vector<double> &, std::vector<double> &, int, int);
	};

#include "IntegratorGaussKronord.inl"

}
#endif /*_INTEGRATOR_GAUSS_KRONORD_H_*/